package cn.ffcs.contract.service;

import java.util.List;

import cn.ffcs.bpm.model.ProcTranRecord;
import cn.ffcs.bpmpvc.services.AppBusinessReqService;
import cn.ffcs.bpmpvc.services.bean.ConfigBean;
import cn.ffcs.bpmpvc.svc.TaskAssignBean;
import cn.ffcs.contract.dao.ContractRemindDao;
import cn.ffcs.contract.model.ContractBussout;
import cn.ffcs.contract.model.ContractRemind;
import cn.ffcs.organ.model.Person;

public interface ContractRemindService {
	/**
	 * 合同约束到期提醒
	 */
	public void runCondRemind();
	/**
	 * 
	 */
	public void runContractDue2Month();
	/**
	 * 
	 * @return
	 */
	public ContractRemindDao getContractRemindDao();
	/**
	 * 
	 * @return
	 */
	public AppBusinessReqService getAppBusinessReqService();
	/**
	 * 
	 * @param flowTaskId
	 * @param content
	 * @param nextTasksList
	 * @param reDoTasksList
	 * @param isCommit
	 */
	public void saveDataAndCommitTask(String flowTaskId, String content,List<TaskAssignBean> nextTasksList,String reDoUserIdArr[],boolean isCommit);
	/**
	 * 提交合同约束提醒处理任务
	 * @param flowTaskId
	 * @param content
	 * @param nextTasksList
	 * @param isCommit
	 * @param contractRemind
	 */
	public void saveDataAndCommitTaskOfDeal(String flowTaskId, String content,List<TaskAssignBean> nextTasksList,boolean isCommit,ContractRemind contractRemind);
	
	
	/**
	 * 保存并启动业务退出申请流程
	 * @param processConfigId
	 * @param person
	 * @param nextTasksList
	 * @param isCommit
	 * @param contractBussout
	 * @return
	 */
	public ProcTranRecord saveBussOutAndStartFlow(String processConfigId, Person person, List<TaskAssignBean> nextTasksList, boolean isCommit, ContractBussout contractBussout);
	/**
	 * 提交合同业务退出任务
	 * @param flowTaskId
	 * @param content
	 * @param nextTasksList
	 * @param isCommit
	 * @param contractBussout
	 * @throws Exception
	 */
	public void commitApplyTask(String flowTaskId,String content, List<TaskAssignBean> nextTasksList, boolean isCommit,ContractBussout contractBussout) throws Exception ;
	/**
	 * 
	 * @return
	 */
	public ConfigBean getConfigBean();
	/**
	 * 原合同特殊约束提醒
	 */
	public void runCondRepeatRemind();
	/**
	 * 将合同特殊约束提醒功能转向业务退出流程
	 */
	public void runCondRepeatRemindForBussOut();
	/**
	 * 将原三个月到期提醒合同功能转向业务退出流程
	 */
	public void runContractDue2MonthForBussOut();
}
